require 'drb'
require 'abstractvirtualnode'

# Classe que serve apenas para nao expor todos os metodos
# do LocalVirtualNode. Assim ela recebe uma instance do LocalVirtualNode
# e chama seus metodos implementando a interface basico de um AbstractVirtualNode.
class ListenerVirtualNode < AbstractVirtualNode
  def initialize(parent)
    @parent = parent
  end
  
  def node_id
    @parent.node_id
  end
  
  def find_successor(id)
    @parent.find_successor(id)
  end
  
  def notify(node)
    @parent.notify(node)
  end
 
  def join(node)
    @parent.join(node)
  end
  
  def get_succ_list
    @parent.get_succ_list
  end
  
  def get_pred_list
    @parent.get_pred_list
  end
  
  def update_succ_list(successors)
    @parent.update_succ_list(successors)
  end
  
  def get_item(key)
    @parent.get_item(key)
  end
  
  def insert_item(key, value)
    @parent.insert_item(key, value)
  end
  
  def remove_item(key)
    @parent.remove_item(key)
  end
  
  def ping
    @parent.ping
  end
end
